package com.lx.t21_30;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author c先生
 * @date 2022年04月28日 下午 4:51:27
 * @describe
 * 定义一个单词的“兄弟单词”为：交换该单词字母顺序（注：可以交换任意次），而不添加、删除、修改原有的字母就能生成的单词。
 * 兄弟单词要求和原来的单词不同。例如： ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。
 * 现在给定你 n 个单词，另外再给你一个单词 x ，让你寻找 x 的兄弟单词里，按字典序排列后的第 k 个单词是什么？
 * 注意：字典中可能有重复单词。
 *
 * 数据范围：1 \le n \le 1000 \1≤n≤1000 ，输入的字符串长度满足 1 \le len(str) \le 10 \1≤len(str)≤10  ， 1 \le k < n \1≤k<n
 * 输入描述：
 * 输入只有一行。 先输入字典中单词的个数n，再输入n个单词作为字典单词。 然后输入一个单词x 最后后输入一个整数k
 * 输出描述：
 * 第一行输出查找到x的兄弟单词的个数m 第二行输出查找到的按照字典顺序排序后的第k个兄弟单词，没有符合第k个的话则不用输出。
 */

public class Main27 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        while ((str = br.readLine()) != null ) {
            String[] strs = str.split(" ");
            int n = Integer.valueOf(strs[0]);//字典中单词的个数
            String[] words = new String[n];//字典
            for (int i = 1, j = 0 ; i <= n ; i++) {
                words[j++] = strs[i];
            }
            String word = strs[strs.length - 2]; //要查找的单词
            int k = Integer.valueOf(strs[strs.length - 1]); //排列后的第k个单词是什么
            //查找兄弟单词
            List<Integer> list = new ArrayList<Integer>();
            int count = 0;
            for (int i = 0 ; i < words.length ; i++) {
                if ( !words[i].equals(word) ) {
                    char[] chars = words[i].toCharArray();
                    char[] chars1 = word.toCharArray();
                    Arrays.sort(chars);
                    Arrays.sort(chars1);
                    String s1 = String.valueOf(chars);
                    String s2 = String.valueOf(chars1);
                    if (s1.equals(s2)) {
                        list.add(i);//得到兄弟单词的位置索引
                        count++;//计数
                    }
                }
            }
            System.out.println(count);
            List<String> list1 = new ArrayList<>();

            for (int i = 0 ; i < list.size() ; i++) {
                list1.add(words[list.get(i)]);//得到兄弟单词词典
            }
            Collections.sort(list1);
            //System.out.println(list1);
            if (list1.size() > k) {
                System.out.println(list1.get(k - 1));
            }
        }
    }
}
